/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package gestionnaire;

import java.util.ArrayList;
import java.util.Collection;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import modeles.*;

/**
 *
 * @author MAZID
 */
@Stateless
public class Gestionnaires {
    @PersistenceContext
    private EntityManager em;
    
    

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")
    
    public Film creerUnFilm(String titre, String description, String image, double prix, Genre genre,
        Realisateur real, Collection<Acteur> acteurs, int qte, EtatFilm etat){
        Film film = new Film(titre, description, image, prix, qte);
        film.setGenre(genre);
        film.setRealisateur(real);
        film.setActeurs(acteurs);
        film.setEtat(etat);
        em.persist(film);
        return film;
    }
    public Genre creerGenre(String nom){
        Genre genre = new Genre(nom);
        em.persist(genre);
        return genre;
        
    }
    public Realisateur creerRealisateur(String nomReal, String prenom, String desc){
        Realisateur real = new Realisateur(nomReal, prenom, desc);
        em.persist(real);
        return real;
    }
    public Acteur creerActeur(String nomActeur, String prenom, String desc){
        Acteur acteur = new Acteur(nomActeur, prenom, desc);
        em.persist(acteur);
        return acteur;
    }
    
    public EtatFilm creerEtatFilm(String statut){
        EtatFilm etat = new EtatFilm(statut);
        em.persist(etat);
        return etat;
    }
    
    public Collection<Genre> getAllGenres(){
        Query q= em.createQuery("Select g From Genre g ");
        return q.getResultList();
    }

    public Collection<Film> getAllFilms(){
        Query q= em.createQuery("Select f From Film f ");
        return q.getResultList();
    }
    
    public Collection<EtatFilm> getAllEtats(){
        Query q= em.createQuery("Select e From EtatFilm e ");
        return q.getResultList();
    }
    
    public Collection<Realisateur> getAllRealisateurs(){
        Query q= em.createQuery("Select e From Realisateur e ");
        return q.getResultList();
    }
    
    public Collection<Film> getFilmParGenre(int idGenre){
        Query q = em.createQuery("select f from Film f where f.genre.id=:param");
        q.setParameter("param", idGenre);
        return q.getResultList();
    }
    //listing des film en promtion
    public Collection<Film> getFilmPromo(){
        Query q = em.createQuery("select f from Film f where f.etat.etat='promotion'");
        return q.getResultList();
    }
    //listing des films nouveautés
    public Collection<Film> getFilmNouvo(){
        Query q = em.createQuery("select f from Film f where f.etat.etat='nouveau'");
        return q.getResultList();
    }
    //creation d'un client 
    public Client creerClient(String loginCl, String mdpCl, String nomCl, String pnomCl, String adresse, 
                    String cp, String ville, String pays, String tel, String email){
        Client client = new Client(loginCl, mdpCl, nomCl, pnomCl, adresse, cp, ville, pays, tel, email);
        em.persist(client);
        return client;
    }
    //test login et mot de passe des client de la base
   public boolean getClientTestLogin(String login, String pwd){
       Query q = em.createQuery("select c from Client c where c.loginCl=:param1 and c.mdpCl=:param2"); 
       q.setParameter("param1", login);
       q.setParameter("param2", pwd);
       Client c = null;
       try{
            c= (Client) q.getSingleResult();
       } catch(Exception e) {
           return false;
       }
       return (c != null);
   }
   //fonction pour recuperer le client connecté
   public Client getClient(String login){
       Client client = em.find(Client.class, login);
       return client;
      
   }
    // fonction pour touver un film avec son id
   public Film getFilm(int id){
       Film film=em.find(Film.class, id);
       return film;
   }
   //fonction qui recupere un film par son id
   public Film getFilmParId(int id){
       Film film = em.find(Film.class, id);
       return film;
   }
   
   // fonction pour inserer les données de test dans la base deonnées
    public void insertTestGenre(){
        
        
        Genre genre1 = creerGenre("Policier");
        
        Genre genre2 =creerGenre("Aventure");
        
        Genre genre3 =creerGenre("Comédie");
              
        Genre genre5 =creerGenre("Horreur");
         
        Genre genre6 =creerGenre("Series TV");
     
        Genre genre7 =creerGenre("Spectacles et Humour");
       
        Genre genre8 =creerGenre("Romantique");
        
        Genre genre9 =creerGenre("Drame");
        
       
        //création des etat des films (soit en promotion, en vente, nouveauté....)
        EtatFilm promo = creerEtatFilm("promotion");
        EtatFilm nouveau = creerEtatFilm("nouveau");
        
        
        //construction des realisateurs de films de test 
        Realisateur real1 = creerRealisateur("STONE","Olivier", "Né le 15 septembre 1946 à New York (New York - Etats-Unis)");
        Realisateur real2 = creerRealisateur("ROBERT","Thierry", " ");
        Realisateur real3 = creerRealisateur("LAUTNER", "Geaorges", "Né le 24 janvier 1926");
        Realisateur real4 = creerRealisateur("BERLANTI", "Greg ", "");
        Realisateur real5 = creerRealisateur("Phillips", "Todd", "Né le 20 décembre 1970 à Brooklyn, New York (Etats-Unis)");
        Realisateur real6 = creerRealisateur("Krawczyk", "Gérard ", "");
        Realisateur real7 = creerRealisateur("Gough", "Alfred ", "");
        Realisateur real8 = creerRealisateur("Semoun", "Elie", "");
        Realisateur real9 = creerRealisateur("Scheuring", "Paul", "");
        Realisateur real10 = creerRealisateur("Palmade", "Pierre", "");
        Realisateur real11 = creerRealisateur("Berbérian", "Alain ", "Né en 1953");
        Realisateur real12 = creerRealisateur("Molinaro", "Edouard ", "");
        Realisateur real13 = creerRealisateur("Oury", "Gérard", "");
        Realisateur real14 = creerRealisateur("Swaim", "Bob ", "");
        Realisateur real15 = creerRealisateur(" Julius", "Corentin", "");
        Realisateur real16 = creerRealisateur("Zidi", "Claude", "");
        Realisateur real17 = creerRealisateur("Oury","Gérard","Né le 29 avril 1919 à Paris (France)");
        Realisateur real18 = creerRealisateur("Corneau", "Alain", "");
        Realisateur real19 = creerRealisateur("Aronofsky", "Darren", "");
        Realisateur real20 = creerRealisateur("Scorsese", "Martin", "Né le 17 novembre 1942 à Flushing, Long Island");
        Realisateur real21 = creerRealisateur("Weitz,", "Paul", "");
        Realisateur real22 = creerRealisateur("Rogers", "James B.", "");
        Realisateur real23 = creerRealisateur("", "", "");
        Realisateur real24 = creerRealisateur("", "", "");
        Realisateur real25 = creerRealisateur("", "", "");
        Realisateur real26 = creerRealisateur("", "", "");
        Realisateur real27 = creerRealisateur("", "", "");
        Realisateur real28 = creerRealisateur("", "", "");
        Realisateur real29 = creerRealisateur("", "", "");
        Realisateur real30 = creerRealisateur("", "", "");
        Realisateur real31 = creerRealisateur("", "", "");
        
        //construction des acteurs de test
        Collection<Acteur> acteurs = new ArrayList<Acteur>();
        Collection<Acteur> col2 = new ArrayList<Acteur>();
        
        Acteur a1 =creerActeur("CAGE","Nicolas", "Né le 7 janvier 1964 à Long Beach, Californie (Etats-Unis)");
        Acteur a2 =creerActeur(" PENA","Michael", "Né le 13 janvier 1976 à Chicago, Illinois (Etats Unis)");
        Acteur a3 =creerActeur("ROBERT", "Thierry","");
        Acteur a4 =creerActeur("TELMON", "Priscilla", "");
        Acteur a5 =creerActeur("VENTURA", "Lino", "Né le 14 juillet 1919 à Parme (Italie)");
        Acteur a6 =creerActeur("BLIER", "Bernard", "Né le 11 janvier 1916");
        Acteur a7 =creerActeur(" WESLEY SHIPP", "John", "");
        Acteur a8 =creerActeur("PAYS", "Amanda", "");
        Acteur a9 =creerActeur(" Naceri", "Samy", "Né le 2 août 1961 à Paris (France)");
        Acteur a10 =creerActeur("Diefenthal", "Frédéric", "Né le 26 juillet 1968 à Saint-Mandé, Val-de-Marne (France)");
        Acteur a11 =creerActeur("Stiller", "Ben", "");
        Acteur a12 =creerActeur("Wilson", "Owen", "");
        Acteur a13 =creerActeur("Welling", "Tom", "Né le 26 avril 1977 à New York (Etats-Unis)");
        Acteur a14 =creerActeur("Durance", "Erica", "");
        Acteur a15 =creerActeur("Semoun", "Elie", "");
        Acteur a16 =creerActeur("Dubosc", "franck", "");
        Acteur a17 =creerActeur("Purcell", "Dominic", "Né le 17 février 1970 à Londres (Angleterre)");
        Acteur a18 =creerActeur("Miller", "Wentworth", "Né le 2 juin 1972 à Chipping Norton (Angleterre)");
        Acteur a19 =creerActeur("Palmade", "Pierre", "");
        Acteur a20 =creerActeur(" Lindon", "Vincent", "");
        Acteur a21 =creerActeur("Timsit", "Patrick ", "Né le 15 juillet 1959 à Alger (Algérie)");
        Acteur a22 =creerActeur(" De Funès", "Louis", "Né le 31 juillet 1914 à Courbevoie (France)");
        Acteur a23 =creerActeur("Rich", "Claude", "");
        Acteur a24 =creerActeur("Bourvil", "", "");
        Acteur a25 =creerActeur("De Funès", "Louis", "");
        Acteur a26 =creerActeur("Baye", "Nathalie ", "");
        Acteur a27 =creerActeur("Léotard", "Philippe", "");
        Acteur a28 =creerActeur("Noiret", "Philippe", "");
        Acteur a29 =creerActeur("Titoff", "", "");
        Acteur a30 =creerActeur(" Lhermitte,  ", "Thierry", "Né le 24 novembre 1952 à Boulogne-Billancourt");
        Acteur a31 =creerActeur(" Hossein", "Robert", "Né le 30 décembre 1927 à Paris (France)");
        Acteur a32 =creerActeur("Nat", "Marie-José", "");
        Acteur a33 =creerActeur("Montand", "Yves", "");
        Acteur a34 =creerActeur("Depardieu", "Gérard", "");
        Acteur a35 =creerActeur("Portman", "Natalie", "");
        Acteur a36 =creerActeur("Kunis", "Mila", "");
        Acteur a37 =creerActeur("Damon", "Matt", "");
        Acteur a38 =creerActeur("DiCaprio", "Leonardo", "");
        Acteur a39 =creerActeur("Klein", "Chris", "");
        Acteur a40 =creerActeur("Elizabeth", "Shannon", "");
        Acteur a41 =creerActeur(" Biggs,", "Jason", "");
        Acteur a42 =creerActeur("", "", "");
        
        acteurs.add(a1);
        acteurs.add(a2);
        col2.add(a3);
        col2.add(a4);
        
       //creer des clients de test
       creerClient("client", "client" , "Client", "Prenom", "15 rue de belgique", "06000"," nice", "France"," 0636564399","diallams@gmail.com");
       
        {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a1);
            acteursDeCeFilm.add(a2);
            
            creerUnFilm("World Trade Center","Sitôt l'alerte donnée, cinq policiers, dont McLoughlin et Jimeno, se rendent au World Trade Center et s'introduisent dans les Tours jumelles. McLoughlin et Jimeno survivent par miracle à l'effondrement des gratte-ciel. Ils se retrouvent piégés sous plusieurs tonnes de béton, de charpentes métalliques tordues, de verre et de gravats...","worldTradeCenter.jpg",2.5, genre9,real1, acteursDeCeFilm, 100,promo);
        }
        {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a3);
            acteursDeCeFilm.add(a4);
            
            creerUnFilm("Voyage Au Tibet Interdit","Année de production 2004","VoyageAuTibet.jpg",2.5, genre9,real3, acteursDeCeFilm, 200,promo);
        }
         {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a3);
            acteursDeCeFilm.add(a4);
            
        creerUnFilm("Les tontons flingueurs","Sur son lit de mort, le Mexicain fait promettre à son ami d'enfance, Fernand Naudin, de veiller sur ses intérêts et sa fille Patricia. Fernand découvre alors qu'il se trouve à la tête d'affaires louches dont les anciens dirigeants entendent bien s'emparer. Mais, flanqué d'un curieux notaire et d'un garde du corps, Fernand impose d'emblée sa loi. Cependant, le belle Patricia lui réserve quelques surprises !","LesTontonsFlingueurs.jpg",2.5,genre1, real4, acteursDeCeFilm, 20,promo);
        }
         {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a7);
            acteursDeCeFilm.add(a8);
            
        creerUnFilm("The Flash"," ","TheFlash.jpg",2.5,genre2,real4, acteursDeCeFilm, 10,nouveau);
        }
         {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a9);
            acteursDeCeFilm.add(a10);
            
        creerUnFilm("Taxi 4","Après cinq ans d'absence, nous retrouvons Daniel et Emilien pour de nouvelles aventures sur la Canebière.","Taxi4.jpg",2.5,genre3,real6, acteursDeCeFilm, 300,promo);
        }
         {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a11);
            acteursDeCeFilm.add(a12);
           
        creerUnFilm("Starsky & Hutch","Décidés à élucider le mystère de cette affaire dont le premier cadavre n'était qu'un échantillon, Starsky et Hutch vont associer leurs talents pour échapper aux pièges et s'en sortir avec autant d'humour que de dégâts..","Starsky&Hutch.jpg",2.5,genre1,real5, acteursDeCeFilm, 400,nouveau);
       }
         {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a15);
            acteursDeCeFilm.add(a16);
           
        creerUnFilm("Elie Semoun.jpg","un film qui est sortie le 22 avril 2012","ElieSemoun.jpg",2.5,genre7,real8, acteursDeCeFilm, 500,nouveau);
        } 
         {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a13);
            acteursDeCeFilm.add(a14);
         
        creerUnFilm("SmallVille","Série américaine de 2001","SmallVille.jpg",2.5, genre6,real7, acteursDeCeFilm, 100,promo);
        }
         {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a17);
            acteursDeCeFilm.add(a18);
            
        creerUnFilm("PrisonBreak","Michael Scofield s'engage dans une véritable lutte contre la montre : son frère Lincoln est dans le couloir de la mort, en attente de son exécution. Persuadé de son innocence mais à court de solutions, Michael décide de se faire ","PrisonBreak.jpg",2.5, genre6,real9, acteursDeCeFilm, 20,nouveau);
        }
     {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a19);
            
                
         creerUnFilm("Pierre Palmade","Le OneMan show de pierre Palmade","PierrePalmade.jpg",2.5, genre3,real10, acteursDeCeFilm, 400,promo);
        }
      {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a20);
            acteursDeCeFilm.add(a21);
               
        creerUnFilm("paparazzi","Et voilà que Bordoni, gardien de nuit de son état, est pris en flagrant délit. Son patron lui brandit sous le nez le dernier numéro de d'un magasine, un hebdo qui traque la vie privée des vedettes. Il fait la page de couverture juste derrière une star en flagrant délit d'adultère dans les tribunes d'un stade de football. Il ne peut pas nier, c'est bien lui au troisième rang au cours du match PSG-Bordeaux. Licencié, Frank Bordoni décide de retrouver le malapris de photographe qui vient de faire de lui un chômeur.","paparazzi.jpg",2.5, genre3,real11, acteursDeCeFilm, 90,promo);
        }
      {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a22);
            acteursDeCeFilm.add(a23);
            
        creerUnFilm("Oscar", "Bertrand, un riche promoteur, mène une vie paisible. Jusqu'au jour où son homme de confiance, Christian, le fait chanter pour doubler son salaire et obtenir la main de sa fille, dont il est l'amant. Il lui avoue également qu'il le vole depuis de nombreuses années. Les choses se compliquent encore quand la maîtresse de Christian se révèle finalement ne pas être Colette, la fille de Bertrand, mais qu'en revanche, Colette s'avère être enceinte d'Oscar, le chauffeur.","Oscar.jpg",2.5, genre3,real12, acteursDeCeFilm, 50,promo);
        }
       {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a23);
            acteursDeCeFilm.add(a22);
            
      creerUnFilm("Le Corniaud","Saroyan, un trafiquant, utilise un honnête commerçant, répondant au nom d'Antoine Maréchal, pour emmener de Naples à Bordeaux une Cadillac remplie d'héroïne.","LeCorniaud.jpg",2.5, genre3,real13, acteursDeCeFilm,30,nouveau);
        }
       {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a24);
            acteursDeCeFilm.add(a25);
            
       creerUnFilm("La Balance","un film qui est sortie le 22 avril 2012","LaBalance.jpg",2.5,genre1,real14, acteursDeCeFilm, 40,promo);
        }
        {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a10);
            acteursDeCeFilm.add(a26);
            
       creerUnFilm("L'incruste","Paul vit de petits délits en tous genres. Bavard, malin, il parvient à s'incruster au domicile d'Alexandre, un musicien, prétextant des liens avec les propriétaires de l'appartement. Tous deux se retrouveront plongés dans une série de mésaventures au cours desquelles ils croiseront la route de la belle Cécilia.","L'incruste.jpg",2.5, genre3,real15, acteursDeCeFilm, 60,nouveau);
        }
        {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a30);
            acteursDeCeFilm.add(a28);
            
        creerUnFilm("Les Ripoux","René, vieux flic adepte des arrangements à l'amiable avec les petits truands, se voit adjoindre comme coéquipier François, un jeunôt frais émoulu de l'école de police. Avec l'aide de son amie Simone, il entreprend de convertir le rigoureux novice à ses méthodes, et pour cela commence par le mettre en relation avec une jolie call-girl, Natacha..."
,"LesRipoux.jpg",2.5, genre3,real16, acteursDeCeFilm, 70,promo);
        }
         {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a31);
            acteursDeCeFilm.add(a32);
            
        creerUnFilm("La Menace","Une jeune femme, venue de la campagne, veut entrer dans le club des Marioles. Mais elle est très vite suivie puis menacée par un dangereux maniaque.","LaMenace.jpg",2.5, genre8,real17, acteursDeCeFilm, 70,nouveau);
        }
         {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a33);
            acteursDeCeFilm.add(a34);
            
         creerUnFilm("Le Choix Des Armes","Noël Durieux, un ancien truand, s'occupe désormais d'un haras avec sa femme Nicole. Mickey, un malfrat en cavale, trouve refuge chez lui, mais en le voyant discuter avec l'inspecteur Sarlat, il s'imagine que Noël l'a dénoncé...","LeChoixDesArmes.jpg",2.5, genre2,real18, acteursDeCeFilm, 80,promo);
        }
         {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a35);
            acteursDeCeFilm.add(a36);
            
        creerUnFilm("Black Swan","Rivalités dans la troupe du New York City Ballet. Nina est prête à tout pour obtenir le rôle principal du Lac des cygnes que dirige l’ambigu Thomas. Mais elle se trouve bientôt confrontée à la belle et sensuelle nouvelle recrue, Lily...","BlackSwan.jpg",2.5, genre5, real19, acteursDeCeFilm, 100,nouveau);
        }
         {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a37);
            acteursDeCeFilm.add(a38);
            
        creerUnFilm("Les Infiltres","A Boston, une lutte sans merci oppose la police à la pègre irlandaise.","LesInfiltres.jpg",2.5, genre1,real20, acteursDeCeFilm, 50,nouveau);
        }
         {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a39);
            acteursDeCeFilm.add(a40);
            
        creerUnFilm("American Pie","Mortifié pour avoir été surpris par ses parents devant un film X, Jim, élève de terminale, fait un pacte avec sa bande de copains: devenir des hommes avant l'entrée à la fac. Il leur reste trois semaines pour utiliser toutes les techniques possibles de séduction. Tous les moyens sont bons, meme les plus inattendus, car chaque jour compte. Une chose est sûre, Jim ne regardera plus jamais une tarte aux pommes de la même façon!","AmericanPie.jpg",2.5, genre3,real21, acteursDeCeFilm, 20,nouveau);
        }
         {
            Collection<Acteur> acteursDeCeFilm = new ArrayList<Acteur>(); 
            acteursDeCeFilm.add(a41);
            acteursDeCeFilm.add(a40);
            
        creerUnFilm("American Pie 2","","AmericanPie2.jpg",2.5, genre3,real22, acteursDeCeFilm, 20,nouveau);
        }
        em.flush();
                       
    }
    
}
